﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace AcademiaInteligenteData.DAL
{
    class DaoAlimentacao : DaoConnection
    {
        public void InserirAlimentacao(Alimentacao alimentacao)
        {
            string insertAlimentacao = "ai_sp_inserirAlimentacao";
            List<SqlParameter> parametros = new List<SqlParameter>();

            parametros.Add(new SqlParameter("@id", alimentacao.id));
            parametros[0].Direction = System.Data.ParameterDirection.InputOutput;            
            parametros.Add(new SqlParameter("@data", alimentacao.data));                       
            parametros.Add(new SqlParameter("@horario", alimentacao.horario));
            parametros.Add(new SqlParameter("@descricao", alimentacao.descricao));
            parametros.Add(new SqlParameter("@qtd_caloria", alimentacao.qtd_caloria));
            Executar(insertAlimentacao, true, parametros);
            alimentacao.id = Convert.ToInt32(parametros[0].Value);
        }
        public void AlterarAlimentacao(Alimentacao alimentacao)
        {
            string alterarAlimentacao = "ai_sp_alterarAlimentacao";
            List<SqlParameter> parametros = new List<SqlParameter>();

            parametros.Add(new SqlParameter("@id", alimentacao.id));
            parametros.Add(new SqlParameter("@data", alimentacao.data));
            parametros.Add(new SqlParameter("@horario", alimentacao.horario));
            parametros.Add(new SqlParameter("@descricao", alimentacao.descricao));
            parametros.Add(new SqlParameter("@qtd_caloria", alimentacao.qtd_caloria));           
            Executar(alterarAlimentacao, true, parametros);
        }
        public void ExcluirAlimentacaoPorID(int id)
        {
            string excluirAlimentacao = "ai_sp_excluirAlimentacao";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id", id));
            Executar(excluirAlimentacao, true, parametros);
        }
        public Alimentacao SelecionarAlimentacaoPorID(int id)
        {
            string selecionaAlimentacao = "ai_sp_selecionarAlimentacaoPorID";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id", id));
            DataSet reader = Selecionar(selecionaAlimentacao, true, parametros);
            int i = 0;
            Alimentacao alimentacao = new Alimentacao();
            
            alimentacao.descricao = Convert.ToString(reader.Tables[0].Rows[i]["Descricao"]);
            alimentacao.horario = Convert.ToDouble(reader.Tables[0].Rows[i]["horario"]);
            alimentacao.data = Convert.ToDateTime(reader.Tables[0].Rows[i]["data"]);
            alimentacao.qtd_caloria = Convert.ToDouble(reader.Tables[0].Rows[i]["qtd_caloria"]);
            alimentacao.id = id;
            return alimentacao;
        }

        public List<Alimentacao> ListarAlimentacao()
        {
            string selecionaAlimentacao = "ai_sp_listarAlimentacao";
            List<SqlParameter> parametros = new List<SqlParameter>();
            DataSet reader = Selecionar(selecionaAlimentacao, true, parametros);
            List<Alimentacao> alimentacoes = new List<Alimentacao>();
            for (int i = 0; i < reader.Tables[0].Rows.Count; i++)
            {
                Alimentacao alimentacao = new Alimentacao();
                alimentacao.descricao = Convert.ToString(reader.Tables[0].Rows[i]["descricao"]);
                alimentacao.data = Convert.ToDateTime(reader.Tables[0].Rows[i]["data"]);
                alimentacao.horario = Convert.ToInt32(reader.Tables[0].Rows[i]["horario"]);
                alimentacao.qtd_caloria = Convert.ToDouble(reader.Tables[0].Rows[i]["qtd_caloria"]);
                alimentacao.id = Convert.ToInt32(reader.Tables[0].Rows[i]["id"]);
                alimentacoes.Add(alimentacao);
            }
            return alimentacoes;
        }

        internal List<Alimentacao> SelecionarAlimentacaoPorDieta(int idAlimentacao, int idDieta)
        {
            string selecionaAlimentacao = "ai_sp_selecionarAlimentacaoPorDieta";
            List<SqlParameter> parametros = new List<SqlParameter>();
            parametros.Add(new SqlParameter("@id_alimentacao", idAlimentacao));
            parametros.Add(new SqlParameter("@id_dieta", idDieta));
            DataSet reader = Selecionar(selecionaAlimentacao, true, parametros);
            List<Alimentacao> alimentacoes = new List<Alimentacao>();
            for (int i = 0; i < reader.Tables[0].Rows.Count; i++)
            {
                Alimentacao alimentacao = new Alimentacao();               
                alimentacao.descricao = Convert.ToString(reader.Tables[0].Rows[i]["descricao"]);
                alimentacao.horario = Convert.ToDouble(reader.Tables[0].Rows[i]["horario"]);
                alimentacao.data = Convert.ToDateTime(reader.Tables[0].Rows[i]["data"]);
                alimentacao.qtd_caloria = Convert.ToDouble(reader.Tables[0].Rows[i]["qtd_caloria"]);
                alimentacao.id = Convert.ToInt32(reader.Tables[0].Rows[i]["id"]);
                if (reader.Tables[0].Rows[i]["id_dieta"] != DBNull.Value)
                    alimentacao.Dieta.id = Convert.ToInt32(reader.Tables[0].Rows[i]["id_dieta"]);
                alimentacoes.Add(alimentacao);
            }
            return alimentacoes;
        }
    }
}
